package com.abel.bigwater.dataserver.model.hgd

import io.netty.buffer.ByteBuf

/**
 * 01 01 0B 01 00 00 37 07 00 00 38 07 00 00 48 07 00 00
 * 类型 通道号 昨 日 流 量 数据 1：累计流量 数据 2：累计流量 数据 3：累计流量
 * P1 L1:00000267 P1:00001847 P1:00001848 P1:00001864
 * 01 02 0B 00 00 00 01 02 00 00 03 02 00 00 05 02 00 00
 * 类型 通道号 昨 日 流 量 数据 1：累计流量 数据 2：累计流量 数据 3： 累计流量
 * P2 L2:00000011 P2:00000513 P2:00000515 P2:00000517
 */
open class PulseChannel(_count: Short) : HgdChannel<Long>(HgdChannelType.PULSE_TYPE, _count) {
    /**
     * compute length of bytes.
     */
    override fun bufLength(): Int = 2 + 4 + 4 * count


    override fun parseBuffer(buf: ByteBuf): Boolean {
        super.parseBuffer(buf)

        yest = buf.readUnsignedIntLE()

        for (i in 1..count) {
            values.add(buf.readUnsignedIntLE())
        }

        return true
    }

    override fun pack(buf: ByteBuf): Boolean {
        super.pack(buf)
        if (yest == null) {
            throw IllegalArgumentException("yesterday reading can't be null")
        }

        buf.writeIntLE(yest!!.toInt())
        for (i in 1..count) {
            buf.writeIntLE(values[i].toInt())
        }

        return true
    }
}
